1. Field of the Invention
The present invention is generally related to remote storage devices. More particularly, the present invention is related to systems and methods for redirecting I/O sequences to enable block-level I/O to be sent to remote storage devices during pre-boot.
2. Description
Computer systems may access remote storage devices via network drives using network file abstraction. Network file abstraction is analogous to mounting one's P: drive that is maintained by IT (Information Technology). The operating system (O/S) of the computer system is familiar with the remote storage device and basically layers a network file system on top of the remote storage device. Access to the remote storage device consists of proxying file system type commands across the network, such as, for example, high level commands such as read the file, write to the file, delete the file, etc. A remote server will receive the commands and proxy the commands for the computer system. Network file abstraction does not allow direct access to file sectors.
Another means of communication between computer systems and remote storage devices utilizes a SCSI (Small Computer Systems Interface) protocol. With the movement of system interconnects from classical bus structures to network structures, IP (Internet Protocol) network structures are more and more becoming good candidates for carrying SCSI. Although the SCSI protocol has been mapped over various transports, such as IPI (Internet Protocol Interface), parallel SCSI, IEEE-1394 (firewire), Fibre Channel, etc., these transports are I/O specific and have limited distance requirements.
Internet Small Computer Systems Interface or iSCSI is an IP-based standard for linking data storage devices over a network and transferring data by carrying SCSI commands over IP networks. iSCSI data storage devices are treated as block level abstractions. Block level abstractions simulate a local drive with interactions that are block-based. Using command descriptor blocks that enable direct access to sectors, a controller receives these command packets that may, for example, require reading a certain sector, writing to a certain sector, formatting a sector or set of sectors, performing a check disk, etc. To date, block level abstractions have been limited to the O/S-runtime phase of a platform because they require O/S drivers. Thus, when an O/S is up and running, the computer system may attach to a remote iSCSI device and perform block-based I/O through an Internet Protocol (IP) using O/S driver assistance. However, during the pre-O/S phase of the computer system, remote block level devices are not mounted or visible to the computer platform, therefore block-based I/O through IP (i.e., iSCSI) cannot be performed. Thus, these remote block level devices are not usable as boot devices because no pre-boot mechanism currently exists for transmitting the SCSI packets to the remote block level devices during pre-boot.
Thus, what is needed is a system and method for allowing pre-operating system (pre-O/S) access to these block level I/O remote storage devices, such as, for example, iSCSI devices. What is also needed is a system and method for allowing pre-O/S access to these block level I/O remote devices to enable a platform to boot from these devices in a similar manner as locally connected devices.